import java.util.Stack;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-07-11
 * Time: 11:38
 */
class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < tokens.length; i++) {
            String str = tokens[i];

            if (!isOperator(str)) {
                //如果不是是操作符
                //则元素入栈
                int val = Integer.parseInt(str);//将字符串转化为整型
                stack.push(val);
            } else {
                //如果是操作符
                //则弹出栈顶两个元素
                //计算结果，并将结果入栈
                int val2 = stack.pop();
                int val1 = stack.pop();
                if (str.equals("+")) {
                    stack.push(val1 + val2);
                }
                if (str.equals("-")) {
                    stack.push(val1 - val2);
                }
                if (str.equals("*")) {
                    stack.push(val1 * val2);
                }
                if (str.equals("/")) {
                    stack.push(val1 / val2);
                }
            }
        }
        //遍历完成后，栈中还有一个元素
        //该元素就是后缀表达式的值
        return stack.pop();
    }

    //判断该元素是否为操作符
    private boolean isOperator(String str) {
        if (str.equals("+") || str.equals("-")
                || str.equals("*") || str.equals("/")) {
            return true;
        }
        return false;
    }
}
public class Test {
}
